[IA64] vmx_vcpu_tak: Fix bugs
authorAlex Williamson <alex.williamson@hp.com>
Fri, 21 Sep 2007 18:49:31 +0000 (12:49 -0600)
committerAlex Williamson <alex.williamson@hp.com>
Fri, 21 Sep 2007 18:49:31 +0000 (12:49 -0600)
Signed-off-by: Tristan Gingold <tgingold@free.fr>
xen/arch/ia64/vmx/vmmu.c

index 9505a2daac15be53698f5757e5c0757ae18998ca..899774b687fd601037bdba87656d43c76a1fa827 100644 (file)
@@ -671,18 +671,19 @@ IA64FAULT vmx_vcpu_tpa(VCPU *vcpu, u64 vadr, u64 *padr)
 u64 vmx_vcpu_tak(VCPU *vcpu, u64 vadr)
 {
     thash_data_t *data;
-    PTA vpta;
     u64 key;
-    vpta.val = vmx_vcpu_get_pta(vcpu);
-    if(vpta.vf==0 || unimplemented_gva(vcpu, vadr)){
-        key=1;
+
+    if (unimplemented_gva(vcpu, vadr)) {
+        key = 1;
         return key;
     }
+
+    /* FIXME: if psr.dt is set, look in the guest VHPT.  */
     data = vtlb_lookup(vcpu, vadr, DSIDE_TLB);
-    if(!data||!data->p){
+    if (!data || !data->p)
         key = 1;
-    }else{
-        key = data->key;
-    }
+    else
+        key = data->key << 8;
+
     return key;
 }